package cc.rengu.igas.cops.core.realize;
/*
 *Create by fuyp on 2020-9-15
 * 公共处理服务：
 * 签约四要素校验
 * 签约短息通知开通校验
 * 校验核心卡签约
 */

import cc.rengu.jradp.asynnotify.AsynNotify;
import cc.rengu.oltp.service.common.entity.MchntOrderInfo;
import cc.rengu.oltp.service.common.entity.UserOrderInfo;

import java.util.List;

public interface PublicDealService {
    /*
     * 签约四要素校验
     * @param instId 银行代码
     * @param acctNo 账号
     * @param certNo 证件号
     * @param certType 证件类型
     * @param mobilePhone 手机号
     * @param custName 客户名称
     * */
    void bankFourEleVerify(String instId, String acctNo, String certNo, String certType, String mobilePhone, String custName) throws Exception;

    /*
     * 签约短息通知开通校验
     * @param instId 银行代码
     * @param acctNo 账号
     * @param certNo 证件号
     * @param certType 证件类型
     * @param mobilePhone 手机号
     * */
    void checkSmsSignNotify(String instId, String acctNo, String certNo, String certType, String mobilePhone) throws Exception;

    /*
     * 校验本行卡核心签约
     * @param instId 银行代码
     * @param acctNo 账号
     * @param certNo 证件号
     * @param certType 证件类型
     * @param signInst 签约主体
     * @param custName 客户名称
     * */
    void debitCardCoreSign(String instId, String acctNo, String certNo, String certType, String signInst, String custName) throws Exception;

    /*
     * 获取订单有效时间
     * @param instId 机构号
     * @param orderExprityTime 有效时间
     * @param orderCreateTime 当前时间
     * */
    String getOrderExpiryTime(String instId, String orderExprityTime, String orderCreateTime) throws Exception;

    /*
     * 校验订单有效性
     * @param userOrderInfo 用户订单表
     * @param orderAmt 订单金额
     * */
    void checkUserOrderPayValidity(UserOrderInfo userOrderInfo, String orderAmt) throws Exception;

    /*
     * 商户D0实时入账
     * @param mchntOrderInfoList 商户订单列表
     * */
    void mchntRealTimeAccouting(List<MchntOrderInfo> mchntOrderInfoList) throws Exception;

    /*
     * 商户合并订单记虚拟账
     * @param userOrderInfo 用户订单信息表
     * @param mchntOrderInfoList 商户订单list
     * */
    void virtAcctMultiMchntAdjust(UserOrderInfo userOrderInfo, List<MchntOrderInfo> mchntOrderInfoList, AsynNotify asynnotify) throws Exception;

    /*
     * 商户合并订单记虚拟账
     * @param userOrderInfo 用户订单信息表
     * @param mchntOrderInfoList 商户订单list
     * */
    @Deprecated
    void virtAcctMultiMchntAdjust(UserOrderInfo userOrderInfo, List<MchntOrderInfo> mchntOrderInfoList) throws Exception;

    /*
     * 判断合并商户订单中所有订单金额是否都支持D0金额
     * @param mchntOrderInfoList 商户订单list
     * 返回是否D0标识
     * */
    boolean judgeMchntD0Flag(List<MchntOrderInfo> mchntOrderInfoList) throws Exception;

    /*
     * 告警平台消息推送
     * @param riskMessage 告警信息
     * @param alaramLevel 告警级别
     * @param respCode    告警错误码
     * */
    void pushRiskMessage(String riskMessage, String alaramLevel, String respCode);
}
